package net.caixiaomi.info.net;

import com.alibaba.fastjson.JSONObject;

import net.caixiaomi.info.Lottery.model.LotteryOrderDetail;
import net.caixiaomi.info.Lottery.model.LotteryTicketInfo;
import net.caixiaomi.info.Lottery.model.LotteryTicketSchemeEntity;
import net.caixiaomi.info.Lottery.model.TrendChartData;
import net.caixiaomi.info.model.AccountDetailsModel;
import net.caixiaomi.info.model.ActiveEntity;
import net.caixiaomi.info.model.ActiveListEntity;
import net.caixiaomi.info.model.AllPaymentWithRecharge;
import net.caixiaomi.info.model.ArticleDetailModel;
import net.caixiaomi.info.model.ArticlePageModel;
import net.caixiaomi.info.model.BaseCallModel;
import net.caixiaomi.info.model.ConfigQueryModel;
import net.caixiaomi.info.model.CountMoneyCurrentMonthModel;
import net.caixiaomi.info.model.CouponModel;
import net.caixiaomi.info.model.DiscoveryHomePageEntity;
import net.caixiaomi.info.model.HomeModel;
import net.caixiaomi.info.model.LeagueDetailEntity;
import net.caixiaomi.info.model.LeagueGroupEntity;
import net.caixiaomi.info.model.LotteryItem;
import net.caixiaomi.info.model.ManagerCardModel;
import net.caixiaomi.info.model.MatchChooseDate;
import net.caixiaomi.info.model.MatchCollectEntity;
import net.caixiaomi.info.model.MatchIntroduceModel;
import net.caixiaomi.info.model.MatchItem;
import net.caixiaomi.info.model.MatchLineupModel;
import net.caixiaomi.info.model.MatchLiveModel;
import net.caixiaomi.info.model.MatchResultNewModel;
import net.caixiaomi.info.model.MessageModel;
import net.caixiaomi.info.model.NumberPrizeEntity;
import net.caixiaomi.info.model.OpenPrizeDetailEntity;
import net.caixiaomi.info.model.OpenPrizeEntity;
import net.caixiaomi.info.model.OpenPrizeMatchListEntity;
import net.caixiaomi.info.model.OrderInfoModel;
import net.caixiaomi.info.model.OrderRecordModel;
import net.caixiaomi.info.model.PayWayItem;
import net.caixiaomi.info.model.PaymentAppModel;
import net.caixiaomi.info.model.PaymentModel;
import net.caixiaomi.info.model.PclassEntity;
import net.caixiaomi.info.model.PlayFootballModel;
import net.caixiaomi.info.model.PrintTicketModel;
import net.caixiaomi.info.model.QueryUserNoticeModel;
import net.caixiaomi.info.model.QueryWithDrawShowModel;
import net.caixiaomi.info.model.RechargeReceiveBonus;
import net.caixiaomi.info.model.SzcPrizePageInfo;
import net.caixiaomi.info.model.TakeOrderPreCalculatePriceModel;
import net.caixiaomi.info.model.TeamDetailForDiscoveryEntity;
import net.caixiaomi.info.model.UpdateEntity;
import net.caixiaomi.info.model.UserInfoModel;
import net.caixiaomi.info.model.WithdrawDetailModel;

import java.util.List;

import retrofit2.Call;
import retrofit2.http.Body;
import retrofit2.http.POST;

/**
 * Created by mengxianzheng on 2017/11/23.
 */

public interface RequestService {

    @POST("member/user/register")
    Call<BaseCallModel<UserInfoModel>> regist(@Body JSONObject params);

    @POST("member/login/loginByPass")
    Call<BaseCallModel<UserInfoModel>> loginByPass(@Body JSONObject params);

    @POST("member/login/loginBySms")
    Call<BaseCallModel<UserInfoModel>> loginBySms(@Body JSONObject params);

    @POST("member/sms/sendSmsCode")
    Call<BaseCallModel> sendSmsCode(@Body JSONObject params);

    @POST("member/user/validateMobile")
    Call<BaseCallModel<String>> validateMobile(@Body JSONObject params);

    @POST("member/user/updateLoginPass")
    Call<BaseCallModel<String>> updateLoginPass(@Body JSONObject params);

    @POST("member/user/real/realNameAuth")
    Call<BaseCallModel<String>> realNameAuth(@Body JSONObject params);

    @POST("member/user/userInfoExceptPass")
    Call<BaseCallModel<UserInfoModel>> userInfoExceptPass(@Body JSONObject params);

    @POST("member/user/bank/addBankCard")
    Call<BaseCallModel> addBankCard(@Body JSONObject params);

    @POST("member/user/bank/queryUserBankList")
    Call<BaseCallModel<List<ManagerCardModel>>> queryUserBankList(@Body JSONObject params);

    @POST("member/user/bank/updateUserBankDefault")
    Call<BaseCallModel> updateUserBankDefault(@Body JSONObject params);

    @POST("member/user/bank/queryWithDrawShow")
    Call<BaseCallModel<QueryWithDrawShowModel>> queryWithDrawShow(@Body JSONObject params);

    @POST("member/user/bank/deleteUserBank")
    Call<BaseCallModel<ManagerCardModel>> deleteUserBank(@Body JSONObject params);

    @POST("member/login/logout")
    Call<BaseCallModel> logout(@Body JSONObject params);

    @POST("payment/payment/recharge")
    Call<BaseCallModel<PaymentAppModel>> recharge(@Body JSONObject params);

    @POST("payment/cash/withdraw")
    Call<BaseCallModel> cashWithdraw(@Body JSONObject params);

    @POST("member/user/bonus/queryBonusListByStatus")
    Call<BaseCallModel<CouponModel>> queryBonusListByStatus(@Body JSONObject params);

//    @POST("order/order/getOrderInfoList")
    @POST("order/order/ngetOrderInfoList")
    Call<BaseCallModel<OrderRecordModel>> getOrderInfoList(@Body JSONObject params);

    @POST("order/order/getOrderDetail")
    Call<BaseCallModel<OrderInfoModel>> getOrderDetail(@Body JSONObject params);

    @POST("order/order/getTicketScheme")
    Call<BaseCallModel<PrintTicketModel>> getTicketScheme(@Body JSONObject params);

    @POST("member/user/message/list")
    Call<BaseCallModel<MessageModel>> getMessageList(@Body JSONObject params);

    @POST("member/user/account/getUserAccountListAndCountTotal")
    Call<BaseCallModel<AccountDetailsModel>> getUserAccountListAndCountTotalUsing(@Body JSONObject params);

    @POST("member/user/account/countMoneyCurrentMonth")
    Call<BaseCallModel<CountMoneyCurrentMonthModel>> countMoneyCurrentMonth(@Body JSONObject params);

    @POST("payment/payment/withdraw/list")
    Call<BaseCallModel<WithdrawDetailModel>> withdrawInfo(@Body JSONObject params);

    @POST("lottery/lottery/match/getMatchList")
    Call<BaseCallModel<PlayFootballModel>> getMatchList(@Body JSONObject params);

//    @POST("lottery/lottery/hall/getHallMixData")
    @POST("lottery/lottery/hall/getAllLotteryInHallMixData")
    Call<BaseCallModel<HomeModel>> getHallData(@Body JSONObject params);

    @POST("lottery/lottery/match/filterConditions")
    Call<BaseCallModel<List<MatchItem>>> filterConditions(@Body JSONObject params);

    @POST("lottery/match/live/info")
    Call<BaseCallModel<MatchLiveModel>> getMatchLiveInfo(@Body JSONObject params);

    @POST("lottery/match/lineup/info")
    Call<BaseCallModel<MatchLineupModel>> getMatchLineupInfo(@Body JSONObject params);

    @POST("lottery/lottery/match/getFilterConditionsSomeDay")
    Call<BaseCallModel<List<MatchItem>>> getFilterConditionsSomeDay(@Body JSONObject params);

//    controller/giveMatchChooseDateUsingPOST

    @POST("lottery/lottery/match/giveMatchChooseDate")
    Call<BaseCallModel<List<MatchChooseDate>>> getMatchChhooseDate(@Body JSONObject params);

    @POST("lottery/lottery/match/getBetInfo")
    Call<BaseCallModel<TakeOrderPreCalculatePriceModel>> getBetInfo(@Body JSONObject params);

    @POST("lottery/lottery/match/nSaveBetInfo")
    Call<BaseCallModel> saveBetInfo(@Body JSONObject params);

    @POST("lottery/dl/wc/saveBetInfo")
    Call<BaseCallModel<PaymentModel>> saveBetInfoWordCup(@Body JSONObject params);

//    @POST("payment/payment/app")
//    Call<BaseCallModel<PaymentAppModel>> paymentApp(@Body JSONObject params);

    @POST("payment/payment/nUnifiedOrder")
    Call<BaseCallModel<PaymentAppModel>> paymentApp(@Body JSONObject params);

    @POST("lottery/lottery/match/queryMatchResult")
    Call<BaseCallModel<List<LotteryItem>>> queryMatchResult(@Body JSONObject params);

    @POST("lottery/lottery/match/queryMatchResultNew")
    Call<BaseCallModel<MatchResultNewModel>> queryMatchResultNew(@Body JSONObject params);

    @POST("lottery/lottery/match/matchTeamInfosSum")
    Call<BaseCallModel<MatchIntroduceModel>> matchTeamInfosSum(@Body JSONObject params);

    @POST("lottery/lottery/match/matchTeamInfos")
    Call<BaseCallModel<MatchIntroduceModel>> matchTeamInfos(@Body JSONObject params);

    @POST("lottery/dl/article/detail")
    Call<BaseCallModel<ArticleDetailModel>> articleDetail(@Body JSONObject params);

    @POST("member/user/collect/list")
    Call<BaseCallModel<ArticlePageModel>> collectList(@Body JSONObject params);

    @POST("member/user/collect/add")
    Call<BaseCallModel> collectAdd(@Body JSONObject params);

    @POST("member/user/collect/delete")
    Call<BaseCallModel> collectDelete(@Body JSONObject params);

    @POST("lottery/dl/article/relatedArticles")
    Call<BaseCallModel<ArticlePageModel>> relatedArticles(@Body JSONObject params);

    @POST("member/switch/config/query")
    Call<BaseCallModel<ConfigQueryModel>> configQuery(@Body JSONObject params);

    @POST("payment/payment/allPayment")
    Call<BaseCallModel<List<PayWayItem>>> allPayment(@Body JSONObject params);

    @POST("payment/payment/query")
    Call<BaseCallModel> paymentQuery(@Body JSONObject params);

    @POST("member/dl/complain/add")
    Call<BaseCallModel> feedback(@Body JSONObject params);

    @POST("member/user/queryUserNotice")
    Call<BaseCallModel<QueryUserNoticeModel>> queryUserNotice(@Body JSONObject params);

    @POST("member/user/updateUnReadNotice")
    Call<BaseCallModel> updateUnReadNotice(@Body JSONObject params);

    @POST("member/user/setLoginPass")
    Call<BaseCallModel> setLoginPass(@Body JSONObject params);

    @POST("payment/payment/allPaymentWithRecharge")
    Call<BaseCallModel<AllPaymentWithRecharge>> allPaymentWithRecharge(@Body JSONObject params);

    @POST("member/user/bonus/rechargeSucReiceiveBonus")
    Call<BaseCallModel<RechargeReceiveBonus>> rechargeSucReiceiveBonus(@Body JSONObject params);

    @POST("member/user/matchCollect/cancle")
    Call<BaseCallModel<MatchCollectEntity>> cancleMatchCollect(@Body JSONObject params);

    @POST("member/user/matchCollect/collectMatchId")
    Call<BaseCallModel<MatchCollectEntity>> addMatchCollect(@Body JSONObject params);

    @POST("member/user/app/updateApp")
    Call<BaseCallModel<UpdateEntity>> getUpdate(@Body JSONObject params);

    @POST("lotto/lotto/getTicketInfo")
    Call<BaseCallModel<LotteryTicketInfo>> getTicketInfo(@Body JSONObject params);

    @POST("lotto/lotto/getChartData")
    Call<BaseCallModel<TrendChartData>> getChartData(@Body JSONObject params);

    @POST("lotto/lotto/saveBetInfo")
    Call<BaseCallModel> saveLotteryBetInfo(@Body JSONObject params);

    @POST("payment/payment/unifiedPayBefore")
    Call<BaseCallModel<PaymentModel>> unifiedPayBefore(@Body JSONObject params);

    @POST("order/order/getLottoOrderDetail")
    Call<BaseCallModel<LotteryOrderDetail>> getLottoOrderDetail(@Body JSONObject params);

    @POST("order/order/getLottoTicketScheme")
    Call<BaseCallModel<LotteryTicketSchemeEntity>> getLottoTicketScheme(@Body JSONObject params);

    @POST("lottery/discoveryPage/homePage")
    Call<BaseCallModel<DiscoveryHomePageEntity>> getDiscoveryHomePage(@Body JSONObject params);

    @POST("lottery/discoveryPage/activeCenter")
    Call<BaseCallModel<ActiveListEntity>> getDiscoveryActive(@Body JSONObject params);

    @POST("lottery/discoveryPage/noviceClassroom")
    Call<BaseCallModel<PclassEntity>> getDiscoveryClass(@Body JSONObject params);

    @POST("lottery/discoveryPage/openPrize")
    Call<BaseCallModel<List<OpenPrizeEntity>>> getDiscoveryOpenPrize(@Body JSONObject params);

    @POST("lottery/discoveryPage/szcDetailList")
    Call<BaseCallModel<SzcPrizePageInfo>> getDiscoverySZCList(@Body JSONObject params);

    @POST("lottery/discoveryPage/querySzcOpenPrizesByDate")
    Call<BaseCallModel<OpenPrizeDetailEntity>> getDiscoverySZCDetail(@Body JSONObject params);

    @POST("lottery/discoveryPage/queryJcOpenPrizesByDate")
    Call<BaseCallModel<OpenPrizeMatchListEntity>> getDiscoveryMatch(@Body JSONObject params);

    @POST("lottery/discoveryPage/leagueHomePageByGroupId")
    Call<BaseCallModel<LeagueGroupEntity>> getDiscoveryLeagues(@Body JSONObject params);

    @POST("lottery/discoveryPage/leagueDetailForDiscovery")
    Call<BaseCallModel<LeagueDetailEntity>> getDiscoveryLeagueDetail(@Body JSONObject params);

    @POST("lottery/discoveryPage/teamDetailForDiscovery")
    Call<BaseCallModel<TeamDetailForDiscoveryEntity>> getTeamDetailForDiscovery(@Body JSONObject params);
}